package com.jiang.专题.双指针.Q11;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/01/20 14:07
 */
class Solution {
    public int maxArea(int[] height) {
        int l = 0, r = height.length - 1; // 从两侧开始向中间移动
        int maxArea = 0;
        int area = 0;

        while (l < r) {
            int min = Math.min(height[l], height[r]); // 得到左右两根最小高度的线
            area = (r - l) * min;
            maxArea = Math.max(area, maxArea);
            // 舍去高度小的线， 因为中间的线如果比它矮或相等，与它围成的面积都没有当前算出的面积高
            // 如果中间的线比它还矮或相等，那就向中间移动
            while (l < r && height[l] <= min) {
                l++;
            }
            while (l < r && height[r] <= min) {
                r--;
            }
        }
        return maxArea;
    }
}